通过无感集成(Zero-ETL)同步数据
AnalyticDB for MySQL提供无感集成(Zero-ETL)功能,支持创建PolarDB for MySQL至AnalyticDB for MySQL的数据同步链路,帮助您一站式完成数据同步和管理,实现事务处理和数据分析一体化。
方案概述
在大数据时代,企业面临着大量分散在不同的系统和平台上的业务数据,为了有效地管理和利用这些数据,企业往往需要依赖于ETL工具对数据进行集中式管理。
ETL是将上层业务系统的数据经过提取(Extract)、转换清洗(Transform)、加载(Load)到数据仓库的处理过程,目的是将上游分散的数据整合到目标端数仓,通过在数仓中做进一步的计算分析,来为业务做有效的商业决策。
传统的ETL流程通常会面临以下挑战:
资源成本增加:不同的数据源可能需要不同的ETL工具,搭建ETL链路会产生额外的资源成本。
系统复杂度增加:用户需要自行维护ETL工具,增加了运维难度,无法专注于业务应用的开发。
数据实时性降低:部分ETL流程涉及周期性的批量更新,在近实时的应用场景中,无法快速产出分析结果。
为了解决这些问题,阿里云瑶池数据库提供了无感集成(Zero-ETL)功能,可以快速构建业务系统(OLTP)和数据仓库(OLAP)之间的数据同步链路,将业务系统(OLTP)的数据自动进行提取、转换清洗和加载到数据仓库(OLAP),从而一站式完成数据同步和管理,实现事务处理和数据分析一体化,帮助客户专注于数据分析业务。
方案优势
简单易用:用户无需创建和维护执行ETL(提取、转换、加载操作)的复杂数据管道,仅需选择源端数据和目标端实例,自动创建实时数据同步链路,减少构建和管理数据管道所带来的挑战,专注于上层应用开发。
零成本:Zero-ETL链路不额外收费,可免费实现在AnalyticDB for MySQL中对上游数据进行分析。
多源汇聚:通过Zero-ETL链路将多个实例中的数据实时同步至一个AnalyticDB for MySQL集群中,构建全局分析视角。
支持的同步链路
RDS for MySQL至AnalyticDB for MySQL的同步链路。详情请参见通过无感集成(Zero-ETL)同步数据。
PolarDB for MySQL至AnalyticDB for MySQL的同步链路。
前提条件
AnalyticDB for MySQL集群与PolarDB for MySQL实例位于同一地域。具体操作,请参见购买集群。
已为AnalyticDB for MySQL集群和PolarDB for MySQL实例创建数据库账号。具体操作创建数据库账号和创建和管理数据库账号。
PolarDB for MySQL实例已开启Binlog功能。具体操作,请参见开启Binlog。
费用说明
同步链路不收取费用。
注意事项
仅部分地域支持无感集成(Zero-ETL)功能:华北2(北京)、华东1(杭州)、华东2(上海)、华南1(深圳)。
AnalyticDB for MySQL集群Zero-ETL链路数超过限制时,将无法创建新Zero-ETL链路。您可以使用DTS创建新的同步链路,或删除不再使用的Zero ETL链路以创建新的链路。Zero-ETL链路条数限制信息如下:
集群预留资源的ACU总数小于24 ACU,可创建1条Zero-ETL链路。
集群预留资源的ACU总数大于等于24 ACU,可创建
3+3*[(总ACU数-24)/50]
条Zero-ETL链路。[(总ACU数-24)/50]
计算时向下取整,例如集群总ACU数为48,计算结果为0.48,取整后为0,允许创建3条Zero-ETL链路。
说明湖仓版预留资源的ACU总数指计算预留资源和存储预留资源的ACU总和。
数仓版,1核等于1ACU。弹性模式的预留资源ACU总数指计算资源和弹性IO资源的核数总和。预留模式的预留资源ACU总数指计算资源的核数。
准备工作
创建AnalyticDB for MySQL服务关联角色
前往RAM控制台的角色列表。
检查角色列表中,是否已存在名为AliyunServiceRoleForAnalyticDBForMySQL的服务关联角色。若不存在,则需创建相关角色。
单击左侧创建角色。
在弹出的创建角色对话框中,选择阿里云服务,并单击下一步。
选择角色类型为服务关联角色,并选择AnalyticDB for MySQL。
单击完成,返回角色列表,确保已成功创建服务关联角色。
授予RAM用户管理权限
RAM用户创建和管理Zero-ETL链路需要下列两种权限。
授予RAM用户AnalyticDB for MySQL管理权限
RAM用户必须拥有AnalyticDB for MySQL的管理权限AliyunADBFullAccess,才可以创建和管理AnalyticDB for MySQL的Zero-ETL链路。操作步骤,请参见为RAM用户授权。
授予RAM用户Zero-ETL管理权限
RAM用户需要具备为数据源实例与目标实例(AnalyticDB for MySQL)创建链路的权限,才能创建和管理Zero-ETL链路。您可以自定义权限策略,允许为数据源和AnalyticDB for MySQL的所有实例创建链路或仅为指定实例创建链路,并将自定义权限策略授权给RAM用户。创建自定义权限策略与RAM用户授权的操作,请参见创建自定义权限策略。
自定义权限策略的脚本如下:
为所有PolarDB for MySQL实例和AnalyticDB for MySQL集群授权
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*",
"Resource": [
"acs:adb:*:*:*",
"acs:polardb:*:*:*"
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions",
"dts:DescribeConfigRelations",
"dts:DescribeSrcLinkConfig",
"dts:DescribeDestLinkConfig",
"dts:DescribeLinkConfig"
],
"Resource": [
"acs:dts:*:*:*"
]
}
]
}
为指定PolarDB for MySQL实例和AnalyticDB for MySQL集群授权
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "dts:*",
"Resource": [
"acs:adb:*:*:dbcluster/am-2zeod8ax4b9a****",
"acs:polardb:*:*:dbcluster/pc-bp13jqn4a26b0****"
]
},
{
"Effect": "Allow",
"Action": [
"dts:DescribeRegions",
"dts:DescribeConfigRelations",
"dts:DescribeSrcLinkConfig",
"dts:DescribeDestLinkConfig",
"dts:DescribeLinkConfig"
],
"Resource": "acs:dts:*:*:*"
}
]
}
操作步骤
登录云原生数据仓库AnalyticDB MySQL控制台,在左上角选择集群所在地域。在左侧导航栏,单击集群列表。在集群列表上方,选择产品系列,然后单击目标集群ID。
进入无感集成(Zero-ETL)功能页面,不同的产品系列功能入口不同。
企业版、基础版或湖仓版集群:在左侧导航栏,选择 。
数仓版集群:在左侧导航栏,选择 。
单击创建Zero-ETL任务,在创建Zero-ETL任务页面配置源库信息和目标库信息。
配置源库信息:
源库信息
说明
任务名称
Zero-ETL任务名称。
数据库类型
选择PolarDB for MySQL。
接入方式
仅支持云实例接入。
实例地区
PolarDB for MySQL实例所属地域。
实例ID
PolarDB for MySQL实例ID。
数据库账号
PolarDB for MySQL实例的数据库账号。
数据库密码
PolarDB for MySQL实例数据库账号的密码。
连接方式
连接PolarDB for MySQL实例的方式。包括非加密链接和SSL安全链接。
说明如果设置为SSL安全连接,您需要提前开启PolarDB for MySQL实例的SSL加密功能,详情请参见设置SSL加密。
配置目标库信息:
目标库信息
说明
数据库类型
当前目标库仅支持AnalyticDB MySQL 3.0。
接入方式
仅支持云实例接入。
实例地区
AnalyticDB for MySQL集群所属的地域。
实例ID
AnalyticDB for MySQL的集群ID。
数据库账号
AnalyticDB for MySQL集群的数据库账号。
数据库密码
AnalyticDB for MySQL集群数据库账号的密码。
上述参数配置完成后,单击测试连接以进行下一步,进入配置Zero-ETL页面,配置如下参数:
配置项目
说明
同步类型
实现数据源之间的数据实时同步。
同步类型分为:库表结构同步、全量同步、增量同步。
说明同步任务固定勾选增量数据同步,将源库产生的增量数据实时同步至目标库。
不需要增量同步时,请使用数据迁移功能。
实例级别选择所需同步的DDL和DML
勾选所需同步的DML操作(insert、update和delete)和DDL操作(create、alter、drop、和truncate),默认全部勾选。
源库对象和已选择对象
数据库中源库对象和同步对象。
高级配置(选填)
设置源库、目标库无法连接后的重试时间和源库、目标库出现其他问题后的重试时间。
上述参数配置完成后,单击配置库表字段,配置信息如下:
库表字段配置
说明
数据库名称
选择已有的数据库。
表名称
选择已有的数据表。
主键列
已选数据表中的主键所在字段。
分布键
已选数据表中的分布键所在字段。
类型
数据表类型,包括分区表和复制表。
定义状态
定义完库表字段配置状态后,即从未定义变为已定义。
配置完上述所有参数后,请单击下一步保存任务并预检查。
预检查通过,单击启动,启动Zero-ETL任务。
您可以在无感数据集成页面,查看目标Zero-ETL任务的名称、源/目标、运行状态等信息。
Zero-ETL任务监控与告警
创建并启动Zero-ETL任务后,您可以在云监控控制台设置Zero-ETL任务报警规则,实时监控Zero-ETL任务的运行情况。具体操作如下。
登录云监控控制台。
查看监控信息。
在左侧导航栏,选择
。鼠标悬浮在云原生数据仓库AnalyticDB MySQL版卡片上,单击云原生数据仓库AnalyticDB MySQL版3.0 - ZeroETL延迟。
在集群列表页,单击集群ID,查看每个集群下Zero-ETL任务的监控信息。
创建报警规则。
在左侧导航栏,单击
。单击创建报警规则,在弹出的创建报警规则面板,配置Zero-ETL任务报警规则。具体操作,请参见创建报警规则。
说明产品需选择为云原生数据仓库AnalyticDB MySQL版3.0 - ZeroETL延迟。
创建订阅策略。
在左侧导航栏,单击
。单击创建订阅策略,在创建订阅策略页面,配置Zero-ETL任务订阅策略。具体操作,请参见创建事件订阅。
说明产品:选择分析型数据库MySQL版3.0。
事件类型:选择异常或Restore。
事件名称:选择ZeroETL任务异常或ZeroETL任务恢复。